import '../lib/jquery.js';
import { ajax } from '../utils/ajax.js';
import { nameTest, pwdTest, nickTest } from "../utils/reg.js";

// 封装显示错误消息的函数
function showError(message) {
    alert(message);
    $('.error').css('display', 'block');
}

// 封装验证失败的逻辑
function validateAndAlert(field, testFunction, errorMessage) {
    if (!testFunction(field)) {
        showError(errorMessage);
        return true;
    }
    return false;
}

// 当表单提交时
$('form').on('submit', async e => {
    // 阻止默认行为
    e.preventDefault();

    // 获取表单数据
    const username = $('.username').val().trim();
    const password = $('.password').val().trim();
    const rpassword = $('.rpassword').val().trim();
    const nickname = $('.nickname').val().trim();

    // 验证空串
    if (!username || !password || !rpassword || !nickname) {
        showError('表单不能为空');
        return;
    }

    // 验证格式和密码一致性
    if (validateAndAlert(username, nameTest, '用户名格式错误')) return;
    if (validateAndAlert(password, pwdTest, '密码格式错误')) return;
    if (validateAndAlert(nickname, nickTest, '昵称格式错误')) return;
    if (password !== rpassword) {
        showError('两次密码不一致');
        return;
    }

    // 发送的数据
    const data = { username, password, rpassword, nickname };
    try {
        const { data: { code } } = await ajax.post('/users/register', data);
        // 失败
        if (code !== 1) throw new Error('注册失败');
        // 成功跳转到登录页面
        alert('注册成功，点击确定跳转到登录页面');
        location.href = './login.html';
    } catch (error) {
        showError(error.message || '注册时发生未知错误');
    }
});